'''
题：编写一个接受句子并计算字母和数字的程序。假设为程序提供了以下输入：
Hello world! 123
然后，输出应该是：
字母10
数字3
'''
#方式1：使用ascii码来分辨字母与数字
# str = input("输入以空格分割的字符串：")
# num_count = 0
# alpha_count = 0
# for i in str:
#     if ord('a')<ord(i)<ord('z') or ord('A')<ord(i)<ord("Z"):
#         alpha_count+=1
#     elif ord('0')<ord(i)<ord('9'):
#         num_count+=1
#     else:
#         continue
# print("字母%d\n数字%d"%(alpha_count,num_count))

#方式二：正则匹配
import re
regex = re.compile("\d+")#建立匹配数字模式
regex1 = re.compile(r"[a-zA-Z]+")#建立匹配字母的模式
S = 'hello world! 123'
g = re.findall(regex,S)
k = re.findall(regex1,S)
print('字母%d'%(len(''.join(k))))
print('数字%d'%(len(''.join(g))))

#方法3：通过c.isdigit(),c.isalpha()
print('请输入：')
s = input()
d={"DIGITS":0, "LETTERS":0}
for c in s:
    if c.isdigit():
        d["DIGITS"]+=1
    elif c.isalpha():
        d["LETTERS"]+=1
    else:
        pass
print ("LETTERS", d["LETTERS"])
print ("DIGITS", d["DIGITS"])


